home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.table;
-
- import com.sun.java.swing.DefaultListSelectionModel;
- import com.sun.java.swing.ListSelectionModel;
- import com.sun.java.swing.event.ChangeEvent;
- import com.sun.java.swing.event.EventListenerList;
- import com.sun.java.swing.event.ListSelectionEvent;
- import com.sun.java.swing.event.ListSelectionListener;
- import com.sun.java.swing.event.TableColumnModelEvent;
- import com.sun.java.swing.event.TableColumnModelListener;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.io.Serializable;
- import java.util.Enumeration;
- import java.util.Vector;
-
- public class DefaultTableColumnModel implements TableColumnModel, PropertyChangeListener, ListSelectionListener, Serializable {
- protected Vector tableColumns = new Vector();
- protected ListSelectionModel selectionModel;
- protected int columnMargin;
- protected EventListenerList listenerList = new EventListenerList();
- protected transient ChangeEvent changeEvent = null;
- protected boolean columnSelectionAllowed;
- protected int totalColumnWidth;
- static Class class$com$sun$java$swing$event$TableColumnModelListener;
-
- public DefaultTableColumnModel() {
- this.setSelectionModel(this.createSelectionModel());
- this.setColumnMargin(1);
- this.setColumnSelectionAllowed(true);
- }
-
- public void addColumn(TableColumn aColumn) {
- if (aColumn == null) {
- throw new IllegalArgumentException("Object is null");
- } else {
- this.tableColumns.addElement(aColumn);
- aColumn.addPropertyChangeListener(this);
- this.recalcWidthCache();
- this.fireColumnAdded(new TableColumnModelEvent(this, 0, this.getColumnCount() - 1));
- }
- }
-
- public void addColumnModelListener(TableColumnModelListener x) {
- EventListenerList var10000 = this.listenerList;
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- var10000.add(var10001, x);
- }
-
- protected ListSelectionModel createSelectionModel() {
- DefaultListSelectionModel m = new DefaultListSelectionModel();
- m.setLeadAnchorNotificationEnabled(false);
- return m;
- }
-
- protected void fireColumnAdded(TableColumnModelEvent e) {
- Object[] listeners = this.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- if (var10000 == var10001) {
- ((TableColumnModelListener)listeners[i + 1]).columnAdded(e);
- }
- }
-
- }
-
- protected void fireColumnMarginChanged() {
- Object[] listeners = this.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var3) {
- throw new NoClassDefFoundError(((Throwable)var3).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- if (var10000 == var10001) {
- if (this.changeEvent == null) {
- this.changeEvent = new ChangeEvent(this);
- }
-
- ((TableColumnModelListener)listeners[i + 1]).columnMarginChanged(this.changeEvent);
- }
- }
-
- }
-
- protected void fireColumnMoved(TableColumnModelEvent e) {
- Object[] listeners = this.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- if (var10000 == var10001) {
- ((TableColumnModelListener)listeners[i + 1]).columnMoved(e);
- }
- }
-
- }
-
- protected void fireColumnRemoved(TableColumnModelEvent e) {
- Object[] listeners = this.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- if (var10000 == var10001) {
- ((TableColumnModelListener)listeners[i + 1]).columnRemoved(e);
- }
- }
-
- }
-
- protected void fireColumnSelectionChanged(ListSelectionEvent e) {
- Object[] listeners = this.listenerList.getListenerList();
-
- for(int i = listeners.length - 2; i >= 0; i -= 2) {
- Object var10000 = listeners[i];
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var4) {
- throw new NoClassDefFoundError(((Throwable)var4).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- if (var10000 == var10001) {
- ((TableColumnModelListener)listeners[i + 1]).columnSelectionChanged(e);
- }
- }
-
- }
-
- public TableColumn getColumn(int columnIndex) {
- return (TableColumn)this.tableColumns.elementAt(columnIndex);
- }
-
- public int getColumnCount() {
- return this.tableColumns.size();
- }
-
- public int getColumnIndex(Object identifier) {
- if (identifier == null) {
- throw new IllegalArgumentException("Identifier is null");
- } else {
- Enumeration enumeration = this.getColumns();
-
- for(int index = 0; enumeration.hasMoreElements(); ++index) {
- TableColumn aColumn = (TableColumn)enumeration.nextElement();
- if (identifier.equals(aColumn.getIdentifier())) {
- return index;
- }
- }
-
- throw new IllegalArgumentException("Identifier not found");
- }
- }
-
- public int getColumnIndexAtX(int xPosition) {
- int index = 0;
- Point aPoint = new Point(xPosition, 1);
- Rectangle columnRect = new Rectangle(0, 0, 0, 3);
-
- for(Enumeration enumeration = this.getColumns(); enumeration.hasMoreElements(); ++index) {
- TableColumn aColumn = (TableColumn)enumeration.nextElement();
- columnRect.width = aColumn.getWidth() + this.columnMargin;
- if (columnRect.contains(aPoint)) {
- return index;
- }
-
- columnRect.x += columnRect.width;
- }
-
- return -1;
- }
-
- public int getColumnMargin() {
- return this.columnMargin;
- }
-
- public Enumeration getColumns() {
- return this.tableColumns.elements();
- }
-
- public boolean getColumnSelectionAllowed() {
- return this.columnSelectionAllowed;
- }
-
- public int getSelectedColumnCount() {
- if (this.selectionModel != null) {
- int iMin = this.selectionModel.getMinSelectionIndex();
- int iMax = this.selectionModel.getMaxSelectionIndex();
- int count = 0;
-
- for(int i = iMin; i <= iMax; ++i) {
- if (this.selectionModel.isSelectedIndex(i)) {
- ++count;
- }
- }
-
- return count;
- } else {
- return 0;
- }
- }
-
- public int[] getSelectedColumns() {
- if (this.selectionModel != null) {
- int iMin = this.selectionModel.getMinSelectionIndex();
- int iMax = this.selectionModel.getMaxSelectionIndex();
- if (iMin != -1 && iMax != -1) {
- int[] rvTmp = new int[1 + (iMax - iMin)];
- int n = 0;
-
- for(int i = iMin; i <= iMax; ++i) {
- if (this.selectionModel.isSelectedIndex(i)) {
- rvTmp[n++] = i;
- }
- }
-
- int[] rv = new int[n];
- System.arraycopy(rvTmp, 0, rv, 0, n);
- return rv;
- } else {
- return new int[0];
- }
- } else {
- return new int[0];
- }
- }
-
- public ListSelectionModel getSelectionModel() {
- return this.selectionModel;
- }
-
- public int getTotalColumnWidth() {
- return this.totalColumnWidth;
- }
-
- public void moveColumn(int columnIndex, int newIndex) {
- if (columnIndex >= 0 && columnIndex < this.getColumnCount() && newIndex >= 0 && newIndex < this.getColumnCount()) {
- if (columnIndex != newIndex) {
- TableColumn aColumn = (TableColumn)this.tableColumns.elementAt(columnIndex);
- boolean reselect = false;
- if (this.selectionModel.isSelectedIndex(columnIndex)) {
- this.selectionModel.removeSelectionInterval(columnIndex, columnIndex);
- reselect = true;
- }
-
- this.tableColumns.removeElementAt(columnIndex);
- this.tableColumns.insertElementAt(aColumn, newIndex);
- if (reselect) {
- this.selectionModel.addSelectionInterval(newIndex, newIndex);
- }
-
- this.fireColumnMoved(new TableColumnModelEvent(this, columnIndex, newIndex));
- }
- } else {
- throw new IllegalArgumentException("moveColumn() - Index out of range");
- }
- }
-
- public void propertyChange(PropertyChangeEvent evt) {
- String name = evt.getPropertyName();
- if ("columWidth".equals(name)) {
- this.recalcWidthCache();
- } else if (!"headerValue".equals(name) && !"headerRenderer".equals(name)) {
- "cellRenderer".equals(name);
- }
-
- }
-
- protected void recalcWidthCache() {
- Enumeration enumeration = this.getColumns();
-
- for(this.totalColumnWidth = 0; enumeration.hasMoreElements(); this.totalColumnWidth += ((TableColumn)enumeration.nextElement()).getWidth() + this.columnMargin) {
- }
-
- }
-
- public void removeColumn(TableColumn column) {
- int columnIndex = this.tableColumns.indexOf(column);
- if (columnIndex != -1) {
- if (this.selectionModel != null) {
- this.selectionModel.removeIndexInterval(columnIndex, columnIndex);
- }
-
- column.removePropertyChangeListener(this);
- this.tableColumns.removeElementAt(columnIndex);
- this.recalcWidthCache();
- this.fireColumnRemoved(new TableColumnModelEvent(this, this.getColumnCount() - 1, 0));
- }
-
- }
-
- public void removeColumnModelListener(TableColumnModelListener x) {
- EventListenerList var10000 = this.listenerList;
- Class var10001 = class$com$sun$java$swing$event$TableColumnModelListener;
- if (var10001 == null) {
- try {
- var10001 = Class.forName("com.sun.java.swing.event.TableColumnModelListener");
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
-
- class$com$sun$java$swing$event$TableColumnModelListener = var10001;
- }
-
- var10000.remove(var10001, x);
- }
-
- public void setColumnMargin(int newMargin) {
- if (newMargin != this.columnMargin) {
- this.columnMargin = newMargin;
- this.recalcWidthCache();
- this.fireColumnMarginChanged();
- }
-
- }
-
- public void setColumnSelectionAllowed(boolean flag) {
- this.columnSelectionAllowed = flag;
- }
-
- public void setSelectionModel(ListSelectionModel newModel) {
- ListSelectionModel oldModel = this.selectionModel;
- if (newModel != oldModel) {
- if (oldModel != null) {
- oldModel.removeListSelectionListener(this);
- }
-
- this.selectionModel = newModel;
- if (newModel != null) {
- newModel.addListSelectionListener(this);
- }
- }
-
- }
-
- public void valueChanged(ListSelectionEvent e) {
- this.fireColumnSelectionChanged(e);
- }
- }
-